package com.java110.web.core;

import org.springframework.util.StringUtils;

import java.io.*;
import java.util.HashMap;
import java.util.Map;

/**
 * 静态资源文件加载器
 * Created by wuxw on 2019/3/18.
 */
public class VueComponentTemplate extends PackageScanner{

    /**
     * 默认扫描路径
     */
    public final static String DEFAULT_COMPONENT_PACKAGE_PATH = "components";

    /**
     * js 文件
     */
    public final static String COMPONENT_JS = "js";

    /**
     * css 文件
     */
    public final static String COMPONENT_CSS = "css";

    /**
     * html 文件
     */
    public final static String COMPONENT_HTML = "html";


    /**
     * HTML 文件缓存器
     */
    private final static Map<String,String> componentTemplate = new HashMap<>();


    /**
     * 初始化 组件信息
     */
    public static void initComponent(String scanPath){
        VueComponentTemplate vueComponentTemplate = new VueComponentTemplate();
        vueComponentTemplate.packageScanner(scanPath,COMPONENT_JS);
        vueComponentTemplate.packageScanner(scanPath,COMPONENT_HTML);
        vueComponentTemplate.packageScanner(scanPath,COMPONENT_CSS);
    }


    /**
     * 根据组件编码查询模板
     * @param componentCode
     * @return
     */
    public static String findTemplateByComponentCode(String componentCode) {
        if(componentTemplate.containsKey(componentCode)){
            return componentTemplate.get(componentCode);
        }

        return null;
    }


    /**
     * 处理资源
     * @param filePath
     */
    protected void handleResource(String filePath){
        Reader reader = null;
        String sb = "";
        try{
            InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(filePath);
            reader = new InputStreamReader(inputStream,"UTF-8");
            int tempChar;
            StringBuffer b = new StringBuffer();
            while ((tempChar = reader.read()) != -1) {
                    b.append((char) tempChar);
            }
            sb = b.toString();
            if(!StringUtils.isEmpty(sb)){
                componentTemplate.put(filePath.substring(filePath.lastIndexOf(File.separator)+1,filePath.length()),sb);
            }
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            if(reader != null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
